// 微信存储：https://developers.weixin.qq.com/miniprogram/dev/framework/ability/storage.html
// 微信登录
// 微信小程序登录流程：https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html
// 登录失败的原因可能是因为没将后台IP添加到白名单

import { mapGetters } from 'vuex'
import { setUserOpenid } from '@/common/request/api/login.js'
import { toast } from '@/common/utils/common'

export const wxLoginMixins = {
	computed: {
	  ...mapGetters([
	    'isUserOpenid',
	  ])
	},
	data () {
		return {
		}
	},
	methods: {
		onGetPhoneNumber(e) {
			return new Promise((resolve, reject) => {
				// 获取手机号官方文档：https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html
				if (e.detail.errMsg === "getPhoneNumber:fail user deny") {
					// 用户拒绝授权
					toast("已取消授权")
					reject("已取消授权")
				} else if (e.detail.errMsg === "getPhoneNumber:fail no permission") {
					// 微信公众平台未认证或未使用企业认证
					toast("微信公众平台未认证或未使用企业认证")
					reject("微信公众平台未认证或未使用企业认证")
				} else if (e.detail.errMsg === "getPhoneNumber:ok") {
					// code换取用户手机号。 每个code只能使用一次，code的有效期为5min
					this.$store.dispatch('auth/wxLogin', e.detail.code).then(res => {
						this.setOpenid();
						this.$store.dispatch('auth/GetInfo').then(result => {
							resolve(result)
						})
					})
				} else {
					toast("授权失败")
					reject("授权失败")
				}
			})
		},
		setOpenid() {
			let self = this;
			// uniapp 官方文档：https://uniapp.dcloud.io/api/plugins/login.html#login
			if (self.isUserOpenid) { return; };
			uni.login({
				provider: 'weixin',
				success: function (loginRes) {
					if (loginRes.code) {
						setUserOpenid(loginRes.code).then(res => {
							// console.log("更新openid成功", res)
							self.$store.commit("auth/SET_IS_USER_OPENID", true);
						})
					} else {
							console.log('登录失败！获取code失败！' + res.errMsg)
					}
				}
			});
		}
	}
}